From e07f0e02458dd17ddf7a47592516748237bc55b3 Mon Sep 17 00:00:00 2001 From: =?utf8?q?=C3=98yvind=20Kol=C3=A5s?= Date: Fri, 18 Aug 2017 23:31:59 +0200 Subject: [PATCH] tests: add a test verifying that buffers are converted between RGB spaces --- tests/Makefile.am | 1 + tests/chromaticities.c | 77 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 78 insertions(+) create mode 100644 tests/chromaticities.c diff --git a/tests/Makefile.am b/tests/Makefile.am index 0db0ccd..4c3841f 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -6,6 +6,7 @@ endif C_TESTS = \ grayscale_to_rgb \ + chromaticities \ rgb_to_bgr \ rgb_to_ycbcr \ srgb_to_lab_u8 \ diff --git a/tests/chromaticities.c b/tests/chromaticities.c new file mode 100644 index 0000000..2c8364a --- /dev/null +++ b/tests/chromaticities.c @@ -0,0 +1,77 @@ +/* babl - dynamically extendable universal pixel conversion library. + * Copyright (C) 2005, 2017 Øyvind Kolås. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 3 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General + * Public License along with this library; if not, see + * . + */ + +#include "config.h" +#include +#include "babl-internal.h" + +#define PIXELS 6 +#define TOLERANCE 0 + +unsigned char source_buf [PIXELS * 3] = +{ 0, 0, 0, + 127, 127, 127, + 255, 255, 255, + 255, 0.0, 0.0, + 0.0, 255, 0.0, + 0.0, 0.0, 255 }; + +unsigned char reference_buf [PIXELS * 3] = +{ 0, 0, 0, + 145, 145, 145, + 255, 255, 255, + 255, 43, 6, + 0.0, 250, 48, + 25, 34, 251}; + +unsigned char destination_buf [PIXELS * 3]; + +static int +test (void) +{ + int i; + int OK = 1; + + babl_process (babl_fish (babl_format_with_space ("R'G'B' u8", babl_space("Apple")), "R'G'B' u8"), + source_buf, destination_buf, + PIXELS); + + for (i = 0; i < PIXELS * 3; i++) + { + if (abs (destination_buf[i] - reference_buf[i]) > TOLERANCE) + { + babl_log ("%2i (%2i%%3=%i, %2i/3=%i) is %i should be %i", + i, i, i % 3, i, i / 3, destination_buf[i], reference_buf[i]); + OK = 0; + } + } + if (!OK) + return -1; + return 0; +} + +int +main (int argc, + char **argv) +{ + babl_init (); + if (test ()) + return -1; + babl_exit (); + return 0; +} -- 2.30.2